package com.ys.web.background.controller;

import com.ys.utils.base.http.RequestHandler;
import com.ys.utils.base.http.ResponseHandler;
import com.ys.utils.base.j2se.StringHandler;
import com.ys.utils.redis.Redis;
import com.ys.utils.redis.key.UserKey;
import com.ys.utils.spring.config.SystemError;
import com.ys.utils.spring.properties.Config;
import com.ys.web.background.service.BackgroundUserService;
import com.ys.web.user.login.LoginService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * @ 名称:
 * @ 创建人: dhf
 * @ 参数： null
 * @ 创建时间: 2022/5/10
 * @ 修改人和其它信息
 * @ 返回值:
 */
@Slf4j
@RestController
@RequestMapping("/manager/user")
public class BackgroundUserController {

    @Autowired
    private BackgroundUserService backgroundUserService;
    @Autowired
    private LoginService loginService;
    /**
     * @ 名称:拉黑禁用
     * @ 创建人: dhf
     * @ 参数： id
     * @ 创建时间: 2022/5/10
     * @ 修改人和其它信息
     * @ 返回值: java.lang.String
     */
    @PostMapping("/black")
    public String black(HttpServletRequest request,String id) {
        String ip2 = RequestHandler.getIP(request);
        if(!ip2.equals(Config.pp.get("ys.recharge.refund.ip"))){
            SystemError.wrapBs("400","此ip不在退款白名单中");
        }
        if (StringHandler.isEmpty(id)) {
            SystemError.wrapBs("500", "参数传递错误");
        }
        String uidByTokenKey = UserKey.uidByToken(id);
        String token = Redis.str.get(uidByTokenKey);
        if(StringHandler.isEmpty(token)){
            token = loginService.uToken.get(id);
        }
        if(StringHandler.isEmpty(token)){
            Redis.key.del(UserKey.uidByToken(token));
        }

        backgroundUserService.updateMiNingUserStatus(id, 2);
        return ResponseHandler.success();
    }

    /**
     * @ 名称:释放
     * @ 创建人: dhf
     * @ 参数： id
     * @ 创建时间: 2022/5/10
     * @ 修改人和其它信息
     * @ 返回值: java.lang.String
     */
    @PostMapping("/release")
    public String release(HttpServletRequest request, String id) {
        String ip2 = RequestHandler.getIP(request);
        if(!ip2.equals(Config.pp.get("ys.recharge.refund.ip"))){
            SystemError.wrapBs("400","此ip不在退款白名单中");
        }
        if (StringHandler.isEmpty(id)) {
            SystemError.wrapBs("500", "参数传递错误");
        }
        backgroundUserService.updateMiNingUserStatus(id, 0);
        return ResponseHandler.success();
    }

    /**
     * @ 名称:冻结
     * @ 创建人: dhf
     * @ 参数： id
     * @ 参数： status 0 解除 1 注销 2 禁用
     * @ 创建时间: 2022/5/10
     * @ 修改人和其它信息
     * @ 返回值: java.lang.String
     */
    @PostMapping("/freeze")
    public String freeze(HttpServletRequest request,String id,String status) {
        String ip2 = RequestHandler.getIP(request);
        if(!ip2.equals(Config.pp.get("ys.recharge.refund.ip"))){
            SystemError.wrapBs("400","此ip不在退款白名单中");
        }
        if (StringHandler.isEmpty(id)) {
            SystemError.wrapBs("500", "参数传递错误");
        }
        String uidByTokenKey = UserKey.uidByToken(id);
        String token = Redis.str.get(uidByTokenKey);
        if(StringHandler.isEmpty(token)){
            token = loginService.uToken.get(id);
        }
        if(StringHandler.isEmpty(token)){
            Redis.key.del(UserKey.uidByToken(token));
        }
        Redis.key.del(uidByTokenKey);
        if(StringHandler.getInt(status)==1) {
            backgroundUserService.updateMiNingUserDeleted(id, StringHandler.getInt(status));
        }else{
            backgroundUserService.updateMiNingFh(id,StringHandler.getInt(status));
        }
        return ResponseHandler.success();
    }

    /**
     * @ 名称:解冻
     * @ 创建人: dhf
     * @ 参数： id
     * @ 创建时间: 2022/5/10
     * @ 修改人和其它信息
     * @ 返回值: java.lang.String
     */
    @PostMapping("/unfreeze")
    public String unfreeze(HttpServletRequest request,String id) {
        String ip2 = RequestHandler.getIP(request);
        if(!ip2.equals(Config.pp.get("ys.recharge.refund.ip"))){
            SystemError.wrapBs("400","此ip不在退款白名单中");
        }
        if (StringHandler.isEmpty(id)) {
            SystemError.wrapBs("500", "参数传递错误");
        }
        backgroundUserService.updateMiNingUserDeleted(id, 0);
        return ResponseHandler.success();
    }

}
